/**
 * 日志存储
 * @author shen
 */

// 引入log4js
const log4js = require('log4js')

// 定义常量，方便使用
const levels = {
    'trace': log4js.levels.TRACE,
    'debug': log4js.levels.DEBUG,
    'info': log4js.levels.INFO,
    'warn': log4js.levels.WARN,
    'error': log4js.levels.ERROR,
    'fatal': log4js.levels.FATAL
}

log4js.configure({
    appenders: { // 追加器(输出内容的形式+文件名，比如输出到控制台/文件，文件命名、格式)
        console: { type: 'console'}, // 输出到控制台
        info: {
            type: 'file', //输出到文件
            filename: 'logs/all-logs.log' // 目录/文件名
        },
        error: { // 错误存放日志，按天滚动，便于排查定位问题
            type: 'dateFile',
            filename: 'logs/log',
            pattern: 'yyyy-MM-dd.log',
            alwaysIncludePattern: true // 设置文件名为filename + pattern的组合体
        }
    },
    categories: { // 日志种类
        default: { // 默认级别为debug
            appenders: ['console'], // 追加器只能是之前appenders指定的方式
            level: 'debug'
        },
        info: {
            appenders: ['info', 'console'],
            level: 'info'
        },
        error: { // 该行自定义级别error,故一旦切换到error级别，只有error级别日志才会被输出
            appenders: ['error', 'console'],
            level: 'error'
        }
    }
})

/**
 * 日志输出， level为debug
 * @param {string} content 
 */
exports.debug = content => {
    let logger = log4js.getLogger('debug') // 实例
    logger.level = levels.debug // 级别
    logger.debug(content) // 输出
}

exports.error = content => {
    let logger = log4js.getLogger('error')
    logger.level = levels.error
    logger.error(content)
}

exports.info = content => {
    let logger = log4js.getLogger('info')
    logger.level = levels.info
    logger.info(content)
}